// 1、final 关键字可以用来修饰类、方法和变量。当 final 用来修饰一个类时，它表示这个类不能被继承
final class Person {
}
// 无法继承final修饰的类
// class Student extends Person {
// }

// 2、class 使用sealed修饰class，并通过permits明确写出能够从该class继承的子类名称:
// 1、被sealed修饰的类，其子类必须使用final、sealed或non-sealed进行修饰
// 2、final类不能再被继承，sealed类只能被其permits指定的类继承，non-sealed类可以被任意类继承
// 3、sealed和non-sealed类可以没有子类

sealed class Shape permits Rect, Circle, Rectangle {
}

final class Rect extends Shape { // Rect自身不能被继承
}

sealed class Rectangle extends Shape permits Square { // Rectangle只能被其permits指定的Square类继承
}

final class Square extends Rectangle {
}

non-sealed class Circle extends Shape { // Circle可以被任意类继承
}

// 无法继承
// final class Aaa extends Shape {
// }
public class Test {
    public static void main(String[] args) {

    }
}